home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Tee3.0 / Tee.m < prev    next >
Text File  |  1995-06-12  |  1KB  |  71 lines

  1. // Tee.m
  2. //
  3. // Tee implementation file
  4. //
  5. // Copyright (C) 1992  Dimitri Tischenko & P.B. Schuller, Delft U. of T.
  6. // Many thanks to Scott Hess
  7. //
  8. #import "Tee.h"
  9. #include <stdio.h>
  10.  
  11. #ifdef DEBUG
  12. static void log(STR, id, STR, SEL);
  13. #else
  14. #define log(a, b, c, d)
  15. #endif
  16.  
  17. @implementation Tee
  18.  
  19. - forward:(SEL)aSelector: (marg_list)argFrame
  20. {
  21.     if ([target1 isKindOf:[Tee class]])
  22.     {
  23.         log("target1", target1, "forward", aSelector);
  24.         [target1 forward:aSelector :argFrame];
  25.     }
  26.     else
  27.     {
  28.         if ([target1 respondsTo:aSelector]){
  29.             log("target1", target1, "performv", aSelector);
  30.             [target1 performv:aSelector :argFrame];
  31.         }
  32.     }
  33.     
  34.     if ([target2 isKindOf:[Tee class]])
  35.     {
  36.         log("target2", target2, "forward", aSelector);
  37.         [target2 forward:aSelector :argFrame];
  38.     }
  39.     else
  40.     {
  41.         if ([target2 respondsTo:aSelector]){
  42.             log("target2", target2, "performv", aSelector);
  43.             [target2 performv:aSelector :argFrame];
  44.         }
  45.     }
  46.     
  47.     return self;
  48. }
  49.  
  50. - (BOOL)respondsTo:(SEL)aSelector
  51. {
  52. #ifdef DEBUG
  53.     printf("Tee respondsTo: %s = %s\n", 
  54.         sel_getName(aSelector), aSelector ? "YES":"NO");
  55. #endif        
  56.     if (!aSelector) 
  57.         return NO;
  58.     else 
  59.         return YES;
  60.  
  61. }
  62.  
  63. #ifdef DEBUG
  64. void log(STR varname, id obj, STR action, SEL aSelector)
  65. {
  66.     printf("%s is a %s; %s %s\n", varname, [obj name], action, sel_getName(aSelector));
  67. }
  68. #endif
  69.  
  70. @end
  71.